#ifndef CMPNT_BINDINGS_LIST
#error Component bindings have not been defined!!
#endif

#undef DEC
#undef MDEC

#define DEC( ClassName, m_ptr ) class ClassName* m_ptr;
#define MDEC( ClassName, m_v_binding ) CVector< class ClassName* > m_v_binding;

private:
//! Declaration of all component bindings pointers
CMPNT_BINDINGS_LIST

#undef DEC
#undef MDEC

#define DEC( ClassName, m_ptr ) \
	m_ptr = m_p_entity->RetrieveBinding< ClassName >( ); \
	b_ok = b_ok && ( m_ptr != NULL );

#define MDEC( ClassName, m_v_binding ) \
	m_p_entity->RetrieveBinding< ClassName >( m_v_binding ); \
	b_ok = b_ok && !m_v_binding.empty( );

//! Hack to avoid include all the bindings headers in the Component .h file
virtual void CheckBindings( void );

//! templated version of the checkBindings method, this is called from the virtual version of the CheckBindings
template< typename T >
void CheckBindings( void )
{
	if( !m_p_entity )
		return false;

	bool_t b_ok = true;

	CMPNT_BINDINGS_LIST

	m_b_bindings_completed = b_ok;
	return b_ok;
}


